1. Field of the Invention
Embodiments of the present invention generally relate to accessing data in a virtualized storage volume and, more particularly, to a method and apparatus for pre-loading a volume map used to translate a logical unit number (LUN) of a virtualized storage volume to a physical storage device LUN.
2. Description of the Related Art
Many business organizations and governmental entities rely upon applications that access large amounts of data for mission-critical applications. Often such data is stored on many different storage devices, which may be heterogeneous in nature, including many different types of devices from many different manufacturers. Collectively these storage devices form a storage area network (SAN).
A SAN provides multiple benefits, allowing for remote data backup and disaster recovery over a computer network, centralized administration of the data, and high availability of the data to the computer network. Sharing storage simplifies storage administration and adds flexibility since cables and storage devices do not have to be physically moved to move storage from one host to another. Adding additional storage capacity to the SAN benefits each host on the computer network.
Configuring individual applications that consume data, or application servers that host such applications, to recognize and directly interact with each storage device that may possibly be encountered in a heterogeneous storage environment is increasingly difficult as the environment is scaled in size and complexity. Therefore, in some storage environments, specialized storage management software and hardware may be used to provide a more uniform storage model to storage consumers. Such software and hardware may also be configured to present physical storage devices as virtual storage devices, e.g., using a Logical Unit Number (LUN), to computer hosts, and to add storage features not present in individual storage devices to the storage model. When virtualized, a collection of physical storage devices can be accessed using a single LUN. The added storage features may be referred to as storage virtualization features, and the software and/or hardware providing the virtual storage devices and the added storage features may be termed “virtualizers” or “virtualization controllers”. Virtualization may be performed within computer hosts, such as within a volume manager layer of a storage software stack at the host, and/or in devices external to the host, such as virtualization switches or virtualization appliances. Such external devices providing virtualization may be termed “off-host” virtualizers, and may be utilized in order to offload processing required for virtualization from the host. Off-host virtualizers may be connected to the external physical storage devices for which they provide virtualization functions via a variety of interconnects, such as Fiber Channel links, Internet Protocol (IP) networks, iSCSI networks, and the like.
Software applications that need to access storage on the SAN may only be aware of a Logical Unit Number (LUN) for the virtualized storage. A virtualization switch translates a virtual LUN into physical storage LUNs of the physical storage devices that comprise the virtual storage allowing a software application to access data on the storage devices within the SAN. The virtualization switch may be an integrated circuit with a memory for storing physical addresses associated with virtual addresses. The amount of memory required by the virtualization switch to store the mapping between each virtual LUN and the associated physical LUN(s) increases as the number of LUN's and virtual addresses on the SAN increases. Adding additional memory to a virtualization switch to store all mappings is cost-prohibitive. Therefore, it is not possible to store all the logical to physical mappings at the DPPs (Data Path Processors) of the virtualization switch at all times.
In the event that the logical to physical mapping is not available at the virtualization switch when an access is made by a host to a logical region of the virtual LUN, a “fault” occurs in the Control Path Processor (CPP) of the virtualization switch. Upon a fault, the virtualization switch must retrieve the LUN translations from a processor or an external volume server. Retrieving the physical LUN translations from an external source is time-consuming and inefficient because doing so involves one or more interrupts and/or network accesses.
Thus, there is a need in the art for a method and apparatus which predicts logical addresses that will be accessed by an application executing on the host and stores the corresponding translations in the memory of the virtualization switch proactively, before the virtualized storage is accessed.